The invention relates generally to computer systems, and more particularly to an improved method and system for providing advice to a user of a computer program.
At times, a user of an application program or operating system may benefit from receiving advice. A basic way in which advice may be provided in a graphical user interface environment is to provide a help button on which a user may click. In response, a dialog box, window or the like is displayed via which the user searches for the desired information. A drawback to this type of advice is that the user needs to ask for it, and moreover, the user needs to have some idea of what to look for. If, for example, the user is not aware that he or she is about to do something wrong or has already done something wrong, then no advice will be given, which may cause harm to the user. For example, a user may inadvertently lose data by rebooting without first saving data if the consequences of such an action are not understood. However, a typical user will not request help so as to be advised of the consequences before re-booting.
As a result, a second type of advice is provided based on monitoring for certain situations and then warning the user before taking an action. Typical examples include prompting a user requesting the deletion of a file before performing the deletion, or advising a user when attempting to write to a floppy disk that is not inserted into the disk drive.
Slightly more sophisticated monitors also have been developed. For example, one such monitor in a word processing program detects when a user appears to have misspelled a word, and provides a visual warning (e.g., via a wavy underline) to indicate the possible misspelling. Such a monitor essentially determines when a separate word-has been completed, searches a dictionary in response, and makes a yes or no decision based on the search result. Another type of monitor looks for a salutation such as xe2x80x9cDear Mr.xe2x80x9d so as to offer assistance to a user possibly writing a letter.
While to a crude extent such monitors provide advice, they are not sophisticated, particularly in that they tend to look for a single condition, and when the condition is detected, the monitor basically does the same thing every time. However, many types of real-life advice depend on a much more complex analysis of factors, with variable results depending on current circumstances. For example, the sale of stock may result in taxable income, but only to the extent the net sale price exceeds the basis, and only if to the extent that it is not offset by some deductible loss. Similarly, mortgage rates may have recently dropped, but whether a user should be advised to refinance depends on the user""s current rate. While the particular events could be monitored by hard coding them into a financial program, contemporary monitors only inform the user of the event, leaving the user the task of going out and finding the information needed to answer a question posed by the event. If the user does not understand the problem or what to look for, then the user cannot answer the question. For example, if mortgage rates have recently dropped, the user first needs to understand that savings may or may not be achieved through refinancing, depending on variables such as how much lower the new rate being offered is relative to the user""s rate, the financing costs, how long the user intends to stay in the mortgaged property, and so on. The user must then find the various pieces of data, along with a formula for determining the time until the monthly payment savings recoup the costs, (if ever).
In sum, contemporary monitoring solutions do not provide intelligent advice, in that they do not render specialized, personalized and context sensitive advice that would be valuable to a computer user performing more complex tasks. Moreover, such monitoring solutions are not extensible, flexible or adaptable to various circumstances. By way of example, financial advice differs from country to country, and it would not make sense to advise a user on buying life insurance to cover estate taxes in a country where there are no estate taxes.
Briefly, the present invention provides a system and method for providing intelligent advice to a user. To this end, at points in the program at which advice may be beneficial to the user, the application invokes an advice engine. In response, the advice engine obtains state information needed to evaluate test conditions for determining a type of advice to provide. For example, the advice engine may retrieve user application data such as a bank account balance and a current interest rate. The advice engine uses this information in a formula or the like to compare the information against at least one test condition, and for each test condition satisfied, the advice engine selects appropriate advice. The advice information is preferably maintained in a template, which further includes rules on queuing the advice for display. The advice engine evaluates these rules against queued state information to determine whether to queue the advice, and if so, at what priority. Queued advice is then displayed to the user in accordance with its priority.
An architecture is described wherein trigger points are placed in an application program at locations in the application program where advice may be useful, and the advice engine is invoked by the application when a trigger point is reached. The advice engine obtains information from various sources, such as a database that includes the user""s application data, and uses the obtained information to test it against a number of conditions for that trigger point. One type of intelligence is thus embodied in the test conditions which typically are based on formulas for analyzing the user""s data. For each condition met, the advice engine retrieves an advice template for providing. advice corresponding to the condition. Based on rules and limits in the template versus display state information, the advice engine decides whether to queue the advice for subsequent display to the user, and a display process subsequently displays the queued advice according to a priority setting maintained in the template. Another type of intelligence is embodied in the rules for queuing or not queuing a display, and in the way in which advice is displayed in a prioritized manner.
Other advantages will become apparent from the following detailed description when taken in conjunction with the drawings, in which: